package action;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import common.DelegaServicos;
import common.Suporte;

import entity.Cidade;
import entity.Endereco;
import entity.PessoaJuridica;

@SuppressWarnings("serial")
public class CadastroPessoaJuridica extends Suporte{

	private String nomeEmpresa;
	private String loginEmpresa;
	private String senhaEmpresa;
	private String email;
	private String telefone;
	private Endereco endereco;
	private String cnpj;
	private String nomeFantasia;
	private String cidadeId;
	private Cidade cidade;
	private List<Cidade> listaCidades;
	private String logradouro;
	private String cep;
	private String bairro;
	private String complemento;
	private String numero;

	public String execute() throws Exception {
		
		DelegaServicos delegador = new DelegaServicos();
		
		this.listaCidades = new ArrayList<Cidade>();
		this.listaCidades = delegador.getCidadeController().listaCidades();
		
		if(isPostMethod()) {
			
			PessoaJuridica pessoa = new PessoaJuridica();
			Endereco endereco = new Endereco();
			
			if(this.nomeEmpresa.trim().length() == 0){
				addActionError(getText("username.required"));
				return INPUT;
			}
			
			if(this.loginEmpresa.trim().length() == 0){
				addActionError(getText("login.required"));
				return INPUT;
			}
			
			if(this.senhaEmpresa.trim().length() == 0){
				addActionError(getText("password.required"));
				return INPUT;
			}
			
			if(this.email.trim().length() == 0){
				addActionError(getText("email.required"));
				return INPUT;
			}
			
			if(this.telefone.trim().length() == 0){
				addActionError(getText("telefone.required"));
				return INPUT;
			}
			
			if(this.cnpj.trim().length() == 0){
				addActionError(getText("cnpj.required"));
				return INPUT;
			}
			
			if(this.nomeFantasia.trim().length() == 0){
				addActionError(getText("nomeFantasia.required"));
				return INPUT;
			}
			
			if(this.cidadeId.trim().length() == 0){
				addActionError(getText("cidade.required"));
				return INPUT;
			}
			
			if(this.logradouro.trim().length() == 0){
				addActionError(getText("logradouro.required"));
				return INPUT;
			}
			
			if(this.bairro.trim().length() == 0){
				addActionError(getText("bairro.required"));
				return INPUT;
			}
			
			if(this.complemento.trim().length() == 0){
				addActionError(getText("complemento.required"));
				return INPUT;
			}
			
			if(this.numero.trim().length() == 0){
				addActionError(getText("numero.required"));
				return INPUT;
			}
			
			pessoa.setNome(this.nomeEmpresa);
			pessoa.setLoginPessoa(this.loginEmpresa);
			pessoa.setSenha(this.senhaEmpresa);
			pessoa.setEmail(this.email);
			pessoa.setTelefone(this.telefone);
			pessoa.setCnpj(this.cnpj);
			pessoa.setNomeFantasia(this.nomeFantasia);
			pessoa.setDataRegistro(new Date());
			
			Cidade cidade = delegador.getCidadeController().retornaCidade(Integer.parseInt(this.cidadeId));
					
			endereco.setCidade(cidade);
			endereco.setLogradouro(this.logradouro);
			endereco.setCep(this.cep);
			endereco.setBairro(this.bairro);
			endereco.setComplemento(this.complemento);
			endereco.setNumero(Integer.parseInt(this.numero));
			
			delegador.getEnderecoController().cadastra(endereco);
			
			pessoa.setEndereco(endereco);
			
			delegador.getPessoaController().cadastra(pessoa);
			
			return SUCCESS;
			
		} else {
			
			return INPUT;
		}
		
	}
	
	public String getNomeEmpresa() {
		return nomeEmpresa;
	}

	public void setNomeEmpresa(String nomeEmpresa) {
		this.nomeEmpresa = nomeEmpresa;
	}

	public String getLoginEmpresa() {
		return loginEmpresa;
	}

	public void setLoginEmpresa(String loginEmpresa) {
		this.loginEmpresa = loginEmpresa;
	}

	public String getSenhaEmpresa() {
		return senhaEmpresa;
	}

	public void setSenhaEmpresa(String senhaEmpresa) {
		this.senhaEmpresa = senhaEmpresa;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public String getNomeFantasia() {
		return nomeFantasia;
	}

	public void setNomeFantasia(String nomeFantasia) {
		this.nomeFantasia = nomeFantasia;
	}
	
	public Endereco getEndereco() {
		return endereco;
	}

	public void setEndereco(Endereco endereco) {
		this.endereco = endereco;
	}

	public String getCidadeId() {
		return cidadeId;
	}

	public void setCidadeId(String cidadeId) {
		this.cidadeId = cidadeId;
	}

	public Cidade getCidade() {
		return cidade;
	}

	public void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}
	
	public List<Cidade> getListaCidades() {
		return listaCidades;
	}

	public void setListaCidades(List<Cidade> listaCidades) {
		this.listaCidades = listaCidades;
	}
	
	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(String numero) {
		this.numero = numero;
	}
}